package Data_IO.data_json;

import com.alibaba.fastjson.*;
import lombok.Data;

@Data
/**
 *  The type Json MyFlight.
 *
 *  @auther Shunhao Yan
 *  @version 2.0
 */
public class Json_CreditCardAccount {

    /**
     * The JSONArray to store the data.
     */
    JSONArray jsonarray = new JSONArray();

    /**
     * Add json.
     *
     * @param object
     */
    //Add a jsonObject
    public void addJson(Object object){
        JSONObject JsonOb = (JSONObject) JSON.toJSON(object);
        JSON json = (JSON) JSON.toJSON(object);
        jsonarray.add(JsonOb);
    }

//    /**
//     * Add Json.
//     *
//     * @param name
//     * @param attribute
//     * @param string
//     */
//    //Create and add an attribute
//    public void addJson_attribute(String name, String attribute, String string){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(name)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.getJSONObject(i).put(attribute,string);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }

//    /**
//     * Add json attribute.
//     *
//     * @param name
//     * @param key
//     * @param newValue
//     */
//    //Change the information
//    public void resetJsonKeyvalue(String name, String key, String newValue){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(name)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.getJSONObject(i).put(key,newValue);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }

//    /**
//     * Delete json.
//     *
//     * @param name
//     */
//    //Delete a jsonObject
//    public void deleteJson(String name){
//        boolean temp = false;
//        for(int i = 0; i < jsonarray.size(); i++){
//            if(jsonarray.getJSONObject(i).containsValue(name)){
//                System.out.println("Exist!");
//                temp = true;
//                jsonarray.remove(i);
//                System.out.println("Successfully operated");
//                break;
//            }
//        }
//        if(temp == false){ System.out.println("Invalid input");}
//    }

    /**
     * Search the requested creditCardAccount with personID and return the corresponding JsonObject.
     * @param personID
     * @return The requested creditCardAccount in JsonObject.
     */
    public JSONObject searchJson_returnCreditCardAccount(String personID){
        for(int i = 0; i < jsonarray.size(); i++){
            if(jsonarray.getJSONObject(i).getString("personID").equals(personID)){
                System.out.println("CreditCardAccount Exist!");
                return jsonarray.getJSONObject(i);
            }
        }
        return null;
    }

    /**
     * Sync the JsonArray extracted from the json file.
     * @param ja
     */
    public void syncJsonArray(JSONArray ja){
        jsonarray.clear();
        jsonarray.addAll(ja); //upload the .js file content into jsonarray
    }

    /**
     * Return the idx of desired creditCardAccount.
     * @param personID
     * @return The idx of desired creditCardAccount
     */
    public int returnIdx(String personID) {
        for(int i = 0; i < jsonarray.size(); i++){
            if(jsonarray.getJSONObject(i).getString("personID").equals(personID)){

                return i;
            }
        }
        return 0;
    }
}

